package org.lemon.cla.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lemon.cla.pojo.ClubActivity;
import org.lemon.cla.dto.request.ClubActivitySearchRequest;
import org.lemon.cla.vo.ClubActivityVo; // 导入 ClubActivityVo

public interface IClubActivityService extends IService<ClubActivity> {
    // IService 提供了丰富的 CRUD 方法 (基于 ClubActivity 实体)

    /**
     * 根据活动ID获取社团活动详情，包含组织者信息。
     * @param activityId 活动ID
     * @return 社团活动视图对象
     */
    ClubActivityVo getClubActivityVoById(Long activityId);

    /**
     * 分页获取所有社团活动，包含组织者信息。
     * @param page 分页对象 (ClubActivityVo 泛型)
     * @return 分页社团活动视图对象列表
     */
    IPage<ClubActivityVo> getAllClubActivitiesVo(Page<ClubActivityVo> page);


    /**
     * 根据多个条件模糊查询社团活动，包含组织者信息。
     *
     * @param page 分页对象 (ClubActivityVo 泛型)
     * @param request 查询请求DTO，包含模糊查询的各种条件
     * @return 分页社团活动视图对象列表
     */
    IPage<ClubActivityVo> searchClubActivitiesByConditions(Page<ClubActivityVo> page, ClubActivitySearchRequest request);
}